package com.czxy.service;

import com.czxy.dao.UserMapper;
import com.czxy.domain.User;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

@Service
@Transactional
public class UserServiceImpl implements UserService{



    @Resource
    private UserMapper userMapper;


    @Override
    public List<User> findAll() {
        return userMapper.selectAll();
        
        
    }

    @Override
    public List<User> findByInfo(User user) {

        // 拼条件
        Example example = new Example(User.class);
        Example.Criteria ct = example.createCriteria();
        // 条件一: 包含用户名
        if(user.getLoginName()!=null && !"".equals(user.getLoginName())){
            ct.andLike("loginName","%"+user.getLoginName()+"%");
        }
        // 条件二:学历
        if(user.getEducation() !=null && !"".equals(user.getEducation())){
            ct.andEqualTo("education", user.getEducation());
        }
        // 条件三:性别
        if(user.getSex() !=null && !"".equals(user.getSex())){
            ct.andEqualTo("sex", user.getSex());
        }

        List<User> list = userMapper.selectByExample(example);
        
        

        return list;
    }

    @Override
    public boolean add(User user) {

        //1.校验登录名 (根据登录名去数据库中查询名为指定登录名的数据,如果有就代表不让添加,没有就代表让添加)
        Example example = new Example(User.class);
        Example.Criteria ct = example.createCriteria();
        ct.andEqualTo("loginName", user.getLoginName());

        List<User> list = userMapper.selectByExample(example);
        if(list.size() >0){
            // 数据库中 已经存在了这个用户名 ,此时不能再添加这个用户名
            return false;
        }



        //2.添加
        userMapper.insert(user);

        return true;
    }

    @Override
    public int del(User user) {
        return userMapper.deleteByPrimaryKey(user);
    }

    @Override
    public User findByUid(Integer uid) {
        return userMapper.selectByPrimaryKey(uid);
    }





    @Override
    public boolean update(User user) {

        //校验登录名是否重复

        //使用登录名和 id 进行联合查询

        //要把当前这条数据的 的登录名 改成 已有登录名相同 这种情况不允许


        Example example = new Example(User.class);
        Example.Criteria ct  = example.createCriteria();
        ct.andEqualTo("loginName",user.getLoginName());
        ct.andNotEqualTo("uid",user.getUid());

        List<User> list = userMapper.selectByExample(example);
        if (list.size()>0){

            return  false;
        }

        userMapper.updateByPrimaryKey(user);


        return false;
    }


}
